﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary; // Namespace til serialisering, binær data

namespace Frugtplantage
{
    class OpgaverCollection
    {
        //Deklaration
        List<Opgaver> OpgaverListe;

        //Constructor
        public OpgaverCollection()
        {
            OpgaverListe = new List<Opgaver>();
        }


        //------------
        // Set metoder
        //------------

        // Opret i listen
        public void SetMyOpgave(string navn, string beskrivelse, string sted, DateTime startTid, DateTime slutTid)
        {
            Opgaver minOpgave = new Opgaver(navn, beskrivelse, sted, startTid, slutTid);
            OpgaverListe.Add(minOpgave);
        }

        // Opdater felt i liste
        public void updateMyOpgave(int indexID, string navn, string beskrivelse, string sted, DateTime startTid, DateTime slutTid)
        {
            Opgaver minOpgave = new Opgaver(navn, beskrivelse, sted, startTid, slutTid);
            OpgaverListe[indexID] = minOpgave;
        }

        // Fjern fra listen
        public void FjernMyOpgave(int indexID)
        {
            OpgaverListe.RemoveAt(indexID);
        }


        //------------
        // Get metoder
        //------------

        // Get alle marker metode (overdrager listen)
        public List<Opgaver> GetMyOpgave()
        {
            return OpgaverListe;
        }


        //-------------------------
        // Gem og hent data fra fil
        //-------------------------

        // Gem data
        public void GemData()
        {
            try
            {
                // Skab fil for skrivning
                FileStream fileStream = new FileStream("opgaver.bin", FileMode.Create, FileAccess.Write);

                // skab binary-formatter til objekt-serialisering
                BinaryFormatter binFormatter = new BinaryFormatter();

                // serialiser medlemssystem til filestream
                binFormatter.Serialize(fileStream, OpgaverListe);

                fileStream.Close();
            }
            catch (Exception ex)
            {

                MessageBox.Show(ex.ToString());
            }
            

        }

        // Hent data
        public void HentData()
        {
            FileStream filestream;
            try
            {
                filestream = new FileStream("opgaver.bin", FileMode.Open, FileAccess.Read);
            }
            catch (Exception)
            {

                throw;
            }


            BinaryFormatter binFormatter = new BinaryFormatter();

            OpgaverListe = (List<Opgaver>)binFormatter.Deserialize(filestream);


            filestream.Close();
        }
    }
}
